<?php

class RestritaController extends Zend_Controller_Action {

    private $resources = array(
        'index',
        'usuarios',
        'mailing',
        'materiais-apoio',
        'categorias',
        'linhas',
        'produtos',
        'tamanhos',
        'cores',
        'fornecedores',
        'banners',
        'cadastrar-revendedor',
        'cadastrar-representante',
        'pedidos',
        'erro',
        'logoff'
    );
    private $auth = null;
    private $tipoUsuario = null;
    private $user = null;
    private $modelUsuario = null;

    public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array()) {
        parent::__construct($request, $response, $invokeArgs);
    }

    public function preDispatch() {
        parent::preDispatch();

        if (($this->getRequest()->getActionName() !== 'login')) {
            if (!$this->auth->hasIdentity()) {
                $this->_helper->flashMessenger->addMessage(array('success' => 'Acesso negado'));
                $this->_redirect(BASE_URL . 'index/login');
            }
        }
    }

    private function denyAccess(array $deny = null) {
        $acl = new Zend_Acl();

        $resources = $this->resources;
        $user = $acl->addRole(new Zend_Acl_Role($this->tipoUsuario));

        $rs = $resources;

        foreach ($deny as $d) {
            if (array_search($d, $rs)) {

                unset($rs[array_search($d, $rs)]);
            }
        }
        $session = new Zend_Session_Namespace();
        $session->permissions = $rs;

        foreach ($resources as $resource) {
            $user->add(new Zend_Acl_Resource($resource));
        }
        $user->allow($this->tipoUsuario, $resources);
        $user->deny($this->tipoUsuario, $deny);

        if ((!$this->tipoUsuario == 'admin') and (!$user->isAllowed($this->tipoUsuario, $this->getRequest()->getActionName()))) {
            $this->redirect(BASE_URL . 'restrita/erro');
        }
    }

    private function getPermissions() {
        switch ($this->tipoUsuario) {
            case 'admin':
                $this->denyAccess(array());
                break;

            case 'user':
                $this->denyAccess(array());
                break;

            case 'dealer':
                $this->denyAccess(array());
                break;

            case 'representative':
                $this->denyAccess(array());
                break;

            case 'provider':
                echo 'provider';
                $this->denyAccess(array());
                break;
        }
    }

    public function init() {
        $this->auth = Zend_Auth::getInstance();

        $this->tipoUsuario = $this->auth->getStorage()->read()->tipoUsuario;

        $this->getPermissions();
        $this->getSubMenu();
        require_once 'controllers/UsuarioController.php';
        $this->user = new UsuarioController($this->getRequest(), $this->getResponse());
        $this->modelUsuario = new Application_Model_Usuario();
    }

    public function indexAction() {
        
    }

    public function pedidosAction() {
        
    }

    public function mailingAction() {
        
    }

    public function materiaisApoioAction() {
        
    }

    public function fornecedoresAction() {
        
    }

    public function representantesAction() {
        
    }

    public function revendedoresAction() {
        
    }

    private function getSubMenu() {

        switch ($this->getRequest()->getActionName()) {
            case 'banners' :
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-banner' . "'> Cadastrar Banners </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-banners' . "'> Listar Banners </a></li>";
                break;

            case 'cadastrar-banner' :
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-banner' . "'> Cadastrar Banners </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-banners' . "'> Listar Banners </a></li>";
                break;

            case 'listar-banners' :
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-banner' . "'> Cadastrar Banners </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-banners' . "'> Listar Banners </a></li>";
                break;

            case 'usuarios':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-usuario' . "'> Cadastrar Usuário </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-usuarios' . "'> Listar Usuários </a></li>";
                break;

            case 'cadastrar-usuario':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-usuario' . "'> Cadastrar Usuário </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-usuarios' . "'> Listar Usuários </a></li>";
                break;

            case 'listar-usuarios':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-usuario' . "'> Cadastrar Usuário </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-usuarios' . "'> Listar Usuários </a></li>";
                break;

            case 'categorias':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-categoria' . "'> Cadastrar Categoria </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-categorias' . "'> Listar Categorias </a></li>";
                break;

            case 'cadastrar-categoria':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-categoria' . "'> Cadastrar Categoria </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-categorias' . "'> Listar Categorias </a></li>";
                break;

            case 'listar-categorias':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-categoria' . "'> Cadastrar Categoria </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-categorias' . "'> Listar Categorias </a></li>";
                break;

            case 'visualizar-categoria':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-categoria' . "'> Cadastrar Categoria </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-categorias' . "'> Listar Categorias </a></li>";
                break;

            case 'produtos':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-produto' . "'> Cadastrar Produtos </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-produtos' . "'> Listar Podutos </a></li>";
                break;

            case 'cadastrar-produto':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-produto' . "'> Cadastrar Produtos </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-produtos' . "'> Listar Podutos </a></li>";
                break;

            case 'listar-produtos':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-produto' . "'> Cadastrar Produto </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-produtos' . "'> Listar Podutos </a></li>";
                break;

            case 'linhas':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-linha' . "'> Cadastrar Linha </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-linhas' . "'> Listar Linhas </a></li>";
                break;

            case 'cadastrar-linha':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-linha' . "'> Cadastrar Linha </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-linhas' . "'> Listar Linhas </a></li>";
                break;

            case 'listar-linhas':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-linha' . "'> Cadastrar Tamanho </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-linhas' . "'> Listar Tamanhos </a></li>";
                break;

            case 'alterar-linha':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-linha' . "'> Cadastrar Tamanho </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-linhas' . "'> Listar Tamanhos </a></li>";
                break;

            case 'tamanhos':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-tamanho' . "'> Cadastrar Tamanho </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-tamanhos' . "'> Listar Tamanhos </a></li>";
                break;

            case 'alterar-tamanho':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-tamanho' . "'> Cadastrar Tamanho </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-tamanhos' . "'> Listar Tamanhos </a></li>";
                break;

            case 'cadastrar-tamanho':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-tamanho' . "'> Cadastrar Tamanho </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-tamanhos' . "'> Listar Tamanhos </a></li>";
                break;

            case 'listar-tamanhos':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-tamanho' . "'> Cadastrar Tamanho </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-tamanhos' . "'> Listar Tamanhos </a></li>";
                break;

            case 'cores':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-cor' . "'> Cadastrar Cor </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-cores' . "'> Listar Cores </a></li>";
                break;

            case 'alterar-cor':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-cor' . "'> Cadastrar Cor </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-cores' . "'> Listar Cores </a></li>";
                break;

            case 'cadastrar-cor':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-cor' . "'> Cadastrar Cor </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-cores' . "'> Listar Cores </a></li>";
                break;

            case 'listar-cores':
                $this->view->subnave = "<li><a href='" . BASE_URL . 'restrita/cadastrar-cor' . "'> Cadastrar Cor </a></li>";
                $this->view->subnave .= "<li><a href='" . BASE_URL . 'restrita/listar-cores' . "'> Listar Cores </a></li>";
                break;
        }
    }

    public function bannersAction() {

        $this->view->title = '<h1>Banners</h1>';
        $this->view->content = 'Banners';
    }

    public function cadastrarBannerAction() {

        $this->view->title = '<h1>Banners</h1>';
        require_once 'models/DAL/BannerDAO.php';

        if ($this->getRequest()->isPost()) {
            $params = $this->getAllParams();

            $file = $_FILES['banners'];


            $ext = end(explode('.', $file['name']));

            $new_name = strtolower($ext . date('simYms') . str_replace(array('-', '.' . $ext, '_', '/tmp/', ' '), '', $file['name'])) . '.' . $ext;
            $final_path = APPLICATION_PATH . '/../public/imgs/banners/' . $new_name;

            $dao = new Application_Model_DAO_Banner();

            $dao->setTitulo($params['tb_titulo']);
            $dao->setCodUsuario((int) Zend_auth::getInstance()->getStorage()->read()->idUsuario);
            $dao->setResolucao($params['tb_resolucao']);
            $dao->setImagePath(BASE_IMG . '/banners/' . $new_name);
            $dao->setLocalizacao($params['tb_link']);
            $dao->setStatus(true);


            $db = new Application_Model_Banner;
            if ($db->add($dao)) {

                if (move_uploaded_file($file['tmp_name'], $final_path)) {
                    chmod($final_path, 0777);
                    require_once 'WideImage/WideImage.php';
                    WideImage::load($final_path)->resize(950, 396)->saveToFile($final_path);

                    $this->_helper->flashMessenger->addMessage(array('success' => 'Banner Cadastrado com sucesso'));
                } else {

                    $this->_helper->flashMessenger->addMessage(array('success' => 'Erro ao fazer upload do arquivo'));
                }
            }
        }
    }

    public function updateBannerAction() {

        $this->view->title = '<h1>Banners</h1>';
        require_once 'models/DAL/BannerDAO.php';
        $db = new Application_Model_Banner;
        $dbtable = new Application_Model_DbTable_Banner();
        $dao = new Application_Model_DAO_Banner();

        if (isset($_GET)) {
            $dao->setIdBanner($this->getParam('id', NULL));
            $dao = $dbtable->getBannerById($dao);

            $this->view->content = $dao;
        }

        if ($this->getRequest()->isPost()) {

            $params = $this->getAllParams();

            $dao->setTitulo($params['tb_titulo']);
            $dao->setCodUsuario((int) Zend_auth::getInstance()->getStorage()->read()->idUsuario);
            $dao->setResolucao($params['tb_resolucao']);
            $dao->setLocalizacao($params['tb_link']);
            $dao->setStatus(true);

            if ($db->add($dao)) {


                $this->_helper->flashMessenger->addMessage(array('success' => 'Banner Cadastrado com sucesso'));
            } else {
                $this->_helper->flashMessenger->addMessage(array('success' =>
                    'Erro ao fazer upload do arquivo'));
            }
        }
    }

    public function listarBannersAction() {

        $this->view->title = '<h1>Banners</h1>';

        $banner = new Application_Model_DbTable_Banner();

        $this->view->content = $banner->getAllBanners();
    }

    public function deleteBannerAction() {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);

        $db = new Application_Model_Banner;
        $dbtable = new Application_Model_DbTable_Banner();
        $dao = new Application_Model_DAO_Banner();

        if (isset($_GET)) {
            $dao->setIdBanner($this->getParam('id', NULL));
            $dao = $dbtable->getBannerById($dao);

            if ($dbtable->deleteBannerById($dao)) {
                $this->_helper->flashMessenger->addMessage(array('success' => "Banner <strong>{$dao->getTitulo()}</strong> excluido com sucesso"));
                $this->redirect(BASE_URL . 'restrita/listar-banners');
            }
        }
    }

    public function alterarStatusBannerAction() {

        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $param = $this->getAllParams();
        $dbal = new Application_Model_Banner();
        $dao = new Application_Model_DAO_Banner();

        if ($param['status'] === 'desativarBanner') {
            $dao->setStatus((int) FALSE);
        } else if ($param['status'] === 'ativarBanner') {
            $dao->setStatus((int) TRUE);
        }
        $dao->setIdBanner($param['id']);
        if ($dbal->alterarStatusBanner($dao)) {
            $this->_helper->flashMessenger->addMessage(array('success' => "Banner alterado com sucesso"));
        }
        $this->redirect(BASE_URL . 'restrita/listar-banners');
    }

    public function cadastrarRevendedorAction() {
        
    }

    public function cadastrarRepresentanteAction() {
        
    }

    public function loginAction() {

        $request = $this->_request;
        if ($request->isPost()) {

            $params = $this->getAllParams();
            require_once 'models/DAL/UsuarioDAO.php';

            $usuario = new Application_Model_DAO_Usuario();
            $usuario->setNomeUsuario($params[
                    'tb_login_restrita']);
            $usuario->setSenha($params['tb_pswd_restrita']
            );

            $auth = Application_Model_Login::login($usuario);

            if ($auth === true) {
                $this->_redirect(BASE_URL . 'restrita');
            } else {

                $this->_helper->flashMessenger->addMessage($auth);
                $this->_redirect(BASE_URL . 'index/login');
            }
        } else {
            exit('Apenas requisições post aceitas');
        }
    }

    public function logoffAction() {

        Zend_Auth::getInstance()->clearIdentity();
        $this->redirect(BASE_URL);
    }

    public function erroAction() {
        
    }

    public function buscaUsuariosAction() {
        
    }

    public function cadastrarLinhasProdutosAction() {
// action body
    }

    public function usuariosAction() {

        $this->view->title = '<h1>Usuários</h1>';
    }

    public function listarUsuariosAction() {

        $this->view->title = '<h1>Usuários</h1>';
        $model = $this->modelUsuario;

//$this->view->content = $model->getAllUsuarios();
        $pagina = (int) $this->getParam("pagina", 0);
        $paginator = Zend_Paginator::factory($model->getAllUsuarios());
// Seta a quantidade de registros por página
        $paginator->setItemCountPerPage(10);
// numero de paginas que serão exibidas
        $paginator->setPageRange(5);
// Seta a página atual
        $paginator->setCurrentPageNumber($pagina);
// Passa o paginator para a view
        $this->view->content = $paginator;
    }

    private function getUser() {

        return $this->user->getUser();
    }

    private function setResult($rs) {
        $this->user->setResult();
    }

    public function cadastrarUsuarioAction() {

        $this->view->title = '<h1>Usuários</h1>';

        if ($this->getRequest()->isPost()) {
            $model = $this->modelUsuario;
            $usuario = $this->getUser();

            $rs = $model->add($usuario);

            $this->setResult($rs);
            $this->redirect(BASE_URL . 'restrita/cadastrar-usuario');
        }
    }

    public function categoriasAction() {
        
    }

    public function cadastrarCategoriaAction() {

        if ($this->getRequest()->isPost()) {
            require_once 'models/DAL/CategoriaDAO.php';
            $params = $this->getAllParams();

            echo '<pre>';

            $file = $_FILES['file_categoria'];

            $ext = end(explode('.', $file['name']));

            $new_name = strtolower($ext . date('simYms') . str_replace(array('-', '.' . $ext, '_', '/tmp/', ' '), '', $file['name'])) . '.' . $ext;

            if (!is_dir(APPLICATION_PATH . '/../public/imgs/categorias/')) {
                mkdir(APPLICATION_PATH . '/../public/imgs/categorias/');
                chmod(APPLICATION_PATH . '/../public/imgs/categorias/', 0777);
            }

            $final_path = APPLICATION_PATH . '/../public/imgs/categorias/' . $new_name;

            $dao = new Application_Model_DAO_Categoria();

            $dao->setCategoria($params['tb_nome_categoria']);
            $dao->setImagePath('categorias/' . $new_name);


            $db = new Application_Model_Categoria();
            if ($db->add($dao)) {

                if (move_uploaded_file($file['tmp_name'], $final_path)) {
                    chmod($final_path, 0777);
                    require_once 'WideImage/WideImage.php';
                    WideImage::load($final_path)->resize(68, 68)->saveToFile($final_path);

                    $this->_helper->flashMessenger->addMessage(array('success' => 'Categoria cadastrada com sucesso'));
                } else {

                    $this->_helper->flashMessenger->addMessage(array('success' => 'Erro ao fazer upload do arquivo'));
                }
            }
        }
    }

    public function cadastrarCategoriaProdutosAction() {

// action body
    }

    public function listarCategoriasAction() {

        $this->view->title = '<h1>Banners</h1>';
        $categoria = new Application_Model_Categoria();

//$this->view->content = $model->getAllUsuarios();
        $pagina = (int) $this->getParam("pagina", 0);
        $paginator = Zend_Paginator::factory($categoria->getAllCategorias());
// Seta a quantidade de registros por página
        $paginator->setItemCountPerPage(10);
// numero de paginas que serão exibidas
        $paginator->setPageRange(5);
// Seta a página atual
        $paginator->setCurrentPageNumber($pagina);
// Passa o paginator para a view
        $this->view->content = $paginator;
    }

    public function deletarCategoriaAction() {
//$this->user->disableLayout();
        $categoria = new Application_Model_Categoria();
        $categoriaDAO = new Application_Model_DAO_Categoria();
        $categoriaDAO->setIdCategoria((int) $this->getParam('id', NULL));

        switch ($categoria->deletar($categoriaDAO)) {
            case Application_Model_Categoria::CATEGORIA_EXCLUIDA :
                $this->_helper->flashMessenger->addMessage(array('success' => "Categoria excluida com sucesso"));
                break;

            case Application_Model_Categoria::CATEGORIA_N_EXCLUIDA :
                $this->_helper->flashMessenger->addMessage(array('success' => 'Erro ao tentar excluir categoria'));
                break;
        }
        $this->redirect(BASE_URL . 'restrita/listar-categorias/pagina/' . $this->getParam('pagina', NULL));
    }

    public function visualizarCategoriaAction() {

        $this->view->title = '<h1>Categorias</h1>';
        require_once 'models/DAL/CategoriaDAO.php';
        $categoria = new Application_Model_Categoria();
        $categoriaDAO = new Application_Model_DAO_Categoria();
        $categoriaDAO->setIdCategoria((int) $this->getParam('id', NULL));
        $categoriaDAO = $categoria->getCategoriaById($categoriaDAO);
        $this->view->content = $categoriaDAO;
    }

    public function alterarCategoriaAction() {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        if ($this->getRequest()->isPost()) {
            require_once 'models/DAL/CategoriaDAO.php';
            $categoria = new Application_Model_Categoria();
            $categoriaDAO = new Application_Model_DAO_Categoria();
            $categoriaDAO->setIdCategoria((int) $this->getParam('id', NULL));
            $categoriaDAO->setCategoria($this->getParam('tb_nome_categoria', NULL));
            $categoria->add($categoriaDAO);
            $this->redirect(BASE_URL . 'restrita/listar-categorias');
        }
    }

    public function produtosAction() {
        
    }

    public function cadastrarProdutoAction() {

        if ($this->getRequest()->isPost()) {
//            echo '<pre>';
//            print_r($_FILES);
//            print_r($this->getAllParams());
//            exit();

            require_once 'models/DAL/ProdutosDAO.php';
            require_once 'models/DAL/LinhasDAO.php';
            require_once 'models/DAL/CategoriaDAO.php';
            require_once 'models/DAL/TamanhosDAO.php';
            require_once 'models/DAL/CoresDAO.php';


            $produto = new Application_Model_DAO_Produtos();
            $linha = new Application_Model_DAO_Linhas();
            $categoria = new Application_Model_DAO_Categoria();

            $model = new Application_Model_Produtos();


            $produto->setNome($this->getParam('tb_nome_produto', NULL));
            $produto->setCodigo($this->getParam('tb_codigo_interno_produto', NULL));
            $linha->setIdLinha((int) $this->getParam('opt_linha', NULL));
            $categoria->setIdCategoria((int) $this->getParam('opt_categoria', NULL));
            $produto->setLinhas($linha);
            $produto->setCategoria($categoria);

            $coresInput = $this->getParam('chk_cores', NULL);
            $tamanhosInput = $this->getParam('chk_tamanhos', NULL);

            foreach ($coresInput as $cor) {

                $cores = new Application_Model_DAO_Cores();
                $cores->setIdCores($cor);
                $produto->addCor($cores);
            }

            foreach ($tamanhosInput as $tamanho) {
                $tamanhos = new Application_Model_DAO_Tamanhos();
                $tamanhos->setIdTamanhos($tamanho);
                $produto->addTamanho($tamanhos);
            }
            $produto->setDescricao($this->getParam('tb_descricao_produto', NULL));
            $produto->setFiles($_FILES['file_fotos_produto']);
            if ($model->save($produto)) {
                $this->_helper->flashMessenger->addMessage(array('success' => "Produto <strong>{$produto->getNome()}</strong> Cadastrado com sucesso"));
                $this->redirect(BASE_URL . 'restrita/listar-produtos');
            }
        }
    }

    public function listarProdutosAction() {
        $produtos = new Application_Model_Produtos();

        $this->view->content = $produtos->getAllProdutos();
    }

    public function linhasAction() {
        
    }

    public function cadastrarLinhaAction() {


        if ($this->getRequest()->isPost()) {

            $this->view->title = '<h1>Linhas</h1>';

            if ($this->getRequest()->isPost()) {

                $file = $_FILES['file_subcategoria'];


                $ext = end(explode('.', $file['name']));

                $new_name = strtolower($ext . date('simYms') . str_replace(array('-', '.' . $ext, '_', '/tmp/', ' ', ':'), '', $file['name'])) . '.' . $ext;

                if (!is_dir(APPLICATION_PATH . '/../public/imgs/linhas/'))
                    mkdir(APPLICATION_PATH . '/../public/imgs/linhas/');

                $final_path = APPLICATION_PATH . '/../public/imgs/linhas/' . $new_name;

                $model = new Application_Model_Linhas;
                $dao = new Application_Model_DAO_Linhas;

                $dao->setNome($this->getParam('tb_nome_subcategoria', NULL));
                $dao->setImagePath(BASE_IMG . 'linhas/' . $new_name);

                if ($model->save($dao)) {

                    if (move_uploaded_file($file['tmp_name'], $final_path)) {
                        chmod($final_path, 0777);
                        require_once 'WideImage/WideImage.php';
                        WideImage::load($final_path)->resize(350, 350)->saveToFile($final_path);

                        $this->_helper->flashMessenger->addMessage(array('success' => "Linha <strong>{$dao->getNome()}</strong> Cadastrada com sucesso"));
                    } else {
                        $this->_helper->flashMessenger->addMessage(array('success' => 'Erro ao fazer upload do arquivo'));
                    }
                }
            }
            $this->redirect(BASE_URL . 'restrita/listar-linhas');
        }
    }

    public function listarLinhasAction() {
        
    }

    public function alterarLinhaAction() {
        $model = new Application_Model_Linhas;
        $dao = new Application_Model_DAO_Linhas();

        $dao->setIdLinha((int) $this->getParam('id', NULL));
        $dao = $model->getUserById($dao);

        $this->view->content = $dao;

        if ($this->getRequest()->isPost()) {
            $dao->setIdLinha((int) $this->getParam('id', NULL));
            $dao->setNome($this->getParam('tb_nome_subcategoria', NULL));

            if ($model->save($dao)) {
                $this->_helper->flashMessenger->addMessage(array('success' => "Linha {$dao->getNome()} alterada com sucesso"));
                $this->redirect(BASE_URL . 'restrita/listar-linhas');
            }
        }
    }

    public function excluirLinhaAction() {
        $this->_helper->viewRenderer->setNoRender(true);

        $model = new Application_Model_Linhas;
        $dao = new Application_Model_DAO_Linhas();
        $dao->setIdLinha((int) $this->getParam('id', NULL));
        if ($model->delete($dao)) {
            $this->_helper->flashMessenger->addMessage(array('success' => "Linha excluida com sucesso"));
            $this->redirect(BASE_URL . 'restrita/listar-linhas');
        }
    }

    public function tamanhosAction() {
        
    }

    public function cadastrarTamanhoAction() {
        require_once 'models/DAL/TamanhosDAO.php';
        $model = new Application_Model_Tamanhos();
        $dao = new Application_Model_DAO_Tamanhos();

        if ($this->getRequest()->isPost()) {
            $dao->setTamanho($this->getParam('tb_tamanho_produto', NULL));

            if ($model->save($dao)) {
                $this->_helper->flashMessenger->addMessage(array('success' => "Tamanhos {$dao->getTamanho()} cadastrado com sucesso!"));
                $this->redirect(BASE_URL . 'restrita/listar-tamanhos');
            }
        }
    }

    public function listarTamanhosAction() {
        $model = new Application_Model_Tamanhos();
        $this->view->content = $model->getAllTamanhos();
    }

    public function deleteTamanhoAction() {
        require_once 'models/DAL/TamanhosDAO.php';
        $model = new Application_Model_Tamanhos();
        $dao = new Application_Model_DAO_Tamanhos();
        $dao->setIdTamanhos((int) $this->getParam('id', NULL));
        $dao->setTamanho($this->getParam('tamanho', NULL));
        if ($model->delete($dao)) {
            $this->_helper->flashMessenger->addMessage(array('success' => "Tamanho {$dao->getTamanho()} excluido com sucesso!"));
            $this->redirect(BASE_URL . 'restrita/listar-tamanhos');
        }
    }

    public function coresAction() {
        
    }

    public function listarCoresAction() {
        require_once 'models/DAL/CoresDAO.php';
        $model = new Application_Model_Cores();
        $this->view->content = $model->getAllCores();
    }

    public function cadastrarCorAction() {

        if ($this->getRequest()->isPost()) {
            require_once 'models/DAL/CoresDAO.php';
            $model = new Application_Model_Cores();
            $dao = new Application_Model_DAO_Cores;

            $dao->setNomeCor($this->getParam('tb_cor_produto', NULL));
            $dao->setHex($this->getParam('hex', NULL));
            if ($model->save($dao)) {
                $this->_helper->flashMessenger->addMessage(array('success' => "Cor {$dao->getNomeCor()} cadastrada com sucesso!"));
                $this->redirect(BASE_URL . 'restrita/listar-cores');
            }
        }
    }

    public function atualizarCorAction() {
        // action body
    }

    public function deleteCorAction() {
        require_once 'models/DAL/CoresDAO.php';
        $model = new Application_Model_Cores();
        $dao = new Application_Model_DAO_Cores();
        $dao->setIdCores((int) $this->getParam('id', NULL));
        $dao->setNomeCor($this->getParam('cor', NULL));
        if ($model->delete($dao)) {
            $this->_helper->flashMessenger->addMessage(array('success' => "Cor <strong>{$dao->getNomeCor()}</strong> excluida com sucesso!"));
            $this->redirect(BASE_URL . 'restrita/listar-cores');
        }
    }

}

